随机数产生原理

您所在的位置:网站首页 random number generator with sub 随机数产生原理

随机数产生原理

#随机数产生原理| 来源: 网络整理| 查看: 265

这三个条件被称为Hull-Dobell定理,虽然LCG能够产生可以通过随机性的正式测试的伪随机数,但对参数 c,m和a 的选择非常敏感。

使用LCG可能出现的问题

历史上,糟糕的因子选择导致了LCG的实施效率低下。在连续调用时,也无法避免序列的相关性。如果我们要自己设计LCG,选择不合适的 a,c,m 往往带来糟糕的结果,却不自知。 历史上有这样的例子RANDU,其中, a=65539,m=231 ,在IBM大型机上使用了许多年,并被广泛应用在其他系统上,现在出现了很多问题,由于使用了糟糕的因子。

ANSI C库中的LCG

ANSI C库中的LCG实现具有一定的缺陷,其中一定数量的实施方法不能很好的工作,这个责任应该由ANSI C委员会及其实施者承担。——“Numerical Recipes”。该评判有明确出处,非笔者臆断! 由ANSI C标准规定rand()返回一个整数值,RAND_MAX通常不是很大。ANSI C标准要求RAND_MAX最大32767。 打开头文件stdlib.h,可以看到定义的十六进制RAND_MAX,使用博客的方法转换为十进制为32767。

/* Maximum value that can be returned by the rand function. */ #define RAND_MAX 0x7fff ANSI C定义的LCG

打开rand.h头文件查看随机数生成器代码,产生随机数的过程即线性同余法,代码简单、结构清楚清楚。

/*** *rand.c - random number generator * * Copyright (c) Microsoft Corporation. All rights reserved. * *Purpose: * defines rand(), srand() - random number generator * *******************************************************************************/ #include #include #include #include /*** *void srand(seed) - seed the random number generator * *Purpose: * Seeds the random number generator with the int given. Adapted from the * BASIC random number generator. * *Entry: * unsigned seed - seed to seed rand # generator with * *Exit: * None. * *Exceptions: * *******************************************************************************/ void __cdecl srand ( unsigned int seed ) { _getptd()->_holdrand = (unsigned long)seed; } /*** *int rand() - returns a random number * *Purpose: * returns a pseudo-random number 0 through 32767. * *Entry: * None. * *Exit: * Returns a pseudo-random number 0 through 32767. * *Exceptions: * *******************************************************************************/ int __cdecl rand ( void ) { _ptiddata ptd = _getptd(); return( ((ptd->_holdrand = ptd->_holdrand * 214013L + 2531011L) >> 16) & 0x7fff ); }

调用方式:

#include #include #include using namespace std; void main(){ //srand((unsigned)time(NULL)); srand(11); for (int i = 0; i < 10; i++) cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3